home *** CD-ROM | disk | FTP | other *** search
- package javax.swing;
-
- import java.awt.Component;
- import java.awt.ComponentOrientation;
- import java.awt.Container;
- import java.awt.Dimension;
- import java.awt.GraphicsConfiguration;
- import java.awt.GraphicsDevice;
- import java.awt.GraphicsEnvironment;
- import java.awt.Insets;
- import java.awt.Point;
- import java.awt.Rectangle;
- import java.awt.Toolkit;
- import java.awt.event.KeyEvent;
- import java.beans.PropertyChangeListener;
- import java.io.IOException;
- import java.io.ObjectOutputStream;
- import java.util.Hashtable;
- import java.util.Vector;
- import javax.accessibility.Accessible;
- import javax.accessibility.AccessibleContext;
- import javax.swing.event.ChangeListener;
- import javax.swing.event.MenuEvent;
- import javax.swing.event.MenuListener;
- import javax.swing.plaf.MenuItemUI;
- import javax.swing.plaf.PopupMenuUI;
-
- public class JMenu extends JMenuItem implements Accessible, MenuElement {
- private static final String uiClassID = "MenuUI";
- private JPopupMenu popupMenu;
- private ChangeListener menuChangeListener;
- private MenuEvent menuEvent;
- private static Hashtable listenerRegistry = null;
- private int delay;
- private Point customMenuLocation;
- private static final boolean TRACE = false;
- private static final boolean VERBOSE = false;
- private static final boolean DEBUG = false;
- protected WinListener popupListener;
-
- public JMenu() {
- this("");
- }
-
- public JMenu(String var1) {
- super(var1);
- this.menuChangeListener = null;
- this.menuEvent = null;
- this.customMenuLocation = null;
- }
-
- public JMenu(Action var1) {
- this();
- this.setAction(var1);
- }
-
- public JMenu(String var1, boolean var2) {
- this(var1);
- }
-
- void initFocusability() {
- }
-
- public void updateUI() {
- this.setUI((MenuItemUI)UIManager.getUI(this));
- if (this.popupMenu != null) {
- this.popupMenu.setUI((PopupMenuUI)UIManager.getUI(this.popupMenu));
- }
-
- }
-
- public String getUIClassID() {
- return "MenuUI";
- }
-
- public void setModel(ButtonModel var1) {
- ButtonModel var2 = this.getModel();
- super.setModel(var1);
- if (var2 != null && this.menuChangeListener != null) {
- var2.removeChangeListener(this.menuChangeListener);
- this.menuChangeListener = null;
- }
-
- this.model = var1;
- if (var1 != null) {
- this.menuChangeListener = this.createMenuChangeListener();
- var1.addChangeListener(this.menuChangeListener);
- }
-
- }
-
- public boolean isSelected() {
- return this.getModel().isSelected();
- }
-
- public void setSelected(boolean var1) {
- ButtonModel var2 = this.getModel();
- boolean var3 = var2.isSelected();
- if (var1 != var2.isSelected()) {
- this.getModel().setSelected(var1);
- }
-
- }
-
- public boolean isPopupMenuVisible() {
- this.ensurePopupMenuCreated();
- return this.popupMenu.isVisible();
- }
-
- public void setPopupMenuVisible(boolean var1) {
- boolean var2 = this.isPopupMenuVisible();
- if (var1 != var2 && (this.isEnabled() || !var1)) {
- this.ensurePopupMenuCreated();
- if (var1 && this.isShowing()) {
- Point var3 = this.getCustomMenuLocation();
- if (var3 == null) {
- var3 = this.getPopupMenuOrigin();
- }
-
- this.getPopupMenu().show(this, var3.x, var3.y);
- } else {
- this.getPopupMenu().setVisible(false);
- }
- }
-
- }
-
- protected Point getPopupMenuOrigin() {
- int var1 = 0;
- int var2 = 0;
- JPopupMenu var3 = this.getPopupMenu();
- Dimension var4 = this.getSize();
- Dimension var5 = var3.getSize();
- if (var5.width == 0) {
- var5 = var3.getPreferredSize();
- }
-
- Point var6 = this.getLocationOnScreen();
- Toolkit var7 = Toolkit.getDefaultToolkit();
- GraphicsConfiguration var8 = this.getGraphicsConfiguration();
- Rectangle var9 = new Rectangle(var7.getScreenSize());
- GraphicsEnvironment var10 = GraphicsEnvironment.getLocalGraphicsEnvironment();
- GraphicsDevice[] var11 = var10.getScreenDevices();
-
- for(int var12 = 0; var12 < var11.length; ++var12) {
- if (var11[var12].getType() == 0) {
- GraphicsConfiguration var13 = var11[var12].getDefaultConfiguration();
- if (var13.getBounds().contains(var6)) {
- var8 = var13;
- break;
- }
- }
- }
-
- if (var8 != null) {
- var9 = var8.getBounds();
- Insets var17 = var7.getScreenInsets(var8);
- var9.width -= Math.abs(var17.left + var17.right);
- var9.height -= Math.abs(var17.top + var17.bottom);
- var6.x -= Math.abs(var17.left);
- var6.y -= Math.abs(var17.top);
- }
-
- Container var18 = this.getParent();
- if (var18 instanceof JPopupMenu) {
- int var19 = UIManager.getInt("Menu.submenuPopupOffsetX");
- int var14 = UIManager.getInt("Menu.submenuPopupOffsetY");
- if (SwingUtilities.isLeftToRight(this)) {
- var1 = var4.width + var19;
- if (var6.x + var1 + var5.width >= var9.width + var9.x && var9.width - var4.width < 2 * (var6.x - var9.x)) {
- var1 = 0 - var19 - var5.width;
- }
- } else {
- var1 = 0 - var19 - var5.width;
- if (var6.x + var1 < var9.x && var9.width - var4.width > 2 * (var6.x - var9.x)) {
- var1 = var4.width + var19;
- }
- }
-
- var2 = var14;
- if (var6.y + var14 + var5.height >= var9.height + var9.y && var9.height - var4.height < 2 * (var6.y - var9.y)) {
- var2 = var4.height - var14 - var5.height;
- }
- } else {
- int var20 = UIManager.getInt("Menu.menuPopupOffsetX");
- int var21 = UIManager.getInt("Menu.menuPopupOffsetY");
- if (SwingUtilities.isLeftToRight(this)) {
- var1 = var20;
- if (var6.x + var20 + var5.width >= var9.width + var9.x && var9.width - var4.width < 2 * (var6.x - var9.x)) {
- var1 = var4.width - var20 - var5.width;
- }
- } else {
- var1 = var4.width - var20 - var5.width;
- if (var6.x + var1 < var9.x && var9.width - var4.width > 2 * (var6.x - var9.x)) {
- var1 = var20;
- }
- }
-
- var2 = var4.height + var21;
- if (var6.y + var2 + var5.height >= var9.height && var9.height - var4.height < 2 * (var6.y - var9.y)) {
- var2 = 0 - var21 - var5.height;
- }
- }
-
- return new Point(var1, var2);
- }
-
- public int getDelay() {
- return this.delay;
- }
-
- public void setDelay(int var1) {
- if (var1 < 0) {
- throw new IllegalArgumentException("Delay must be a positive integer");
- } else {
- this.delay = var1;
- }
- }
-
- private void ensurePopupMenuCreated() {
- if (this.popupMenu == null) {
- this.popupMenu = new JPopupMenu();
- this.popupMenu.setInvoker(this);
- this.popupListener = this.createWinListener(this.popupMenu);
- }
-
- }
-
- private Point getCustomMenuLocation() {
- return this.customMenuLocation;
- }
-
- public void setMenuLocation(int var1, int var2) {
- this.customMenuLocation = new Point(var1, var2);
- if (this.popupMenu != null) {
- this.popupMenu.setLocation(var1, var2);
- }
-
- }
-
- public JMenuItem add(JMenuItem var1) {
- this.ensurePopupMenuCreated();
- return this.popupMenu.add(var1);
- }
-
- public Component add(Component var1) {
- this.ensurePopupMenuCreated();
- this.popupMenu.add(var1);
- return var1;
- }
-
- public Component add(Component var1, int var2) {
- this.ensurePopupMenuCreated();
- this.popupMenu.add(var1, var2);
- return var1;
- }
-
- public JMenuItem add(String var1) {
- return this.add(new JMenuItem(var1));
- }
-
- public JMenuItem add(Action var1) {
- JMenuItem var2 = this.createActionComponent(var1);
- var2.setAction(var1);
- this.add(var2);
- return var2;
- }
-
- protected JMenuItem createActionComponent(Action var1) {
- 1 var2 = new 1(this);
- ((JMenuItem)var2).setHorizontalTextPosition(11);
- ((JMenuItem)var2).setVerticalTextPosition(0);
- return var2;
- }
-
- protected PropertyChangeListener createActionChangeListener(JMenuItem var1) {
- return var1.createActionPropertyChangeListener0(var1.getAction());
- }
-
- public void addSeparator() {
- this.ensurePopupMenuCreated();
- this.popupMenu.addSeparator();
- }
-
- public void insert(String var1, int var2) {
- if (var2 < 0) {
- throw new IllegalArgumentException("index less than zero.");
- } else {
- this.ensurePopupMenuCreated();
- this.popupMenu.insert(new JMenuItem(var1), var2);
- }
- }
-
- public JMenuItem insert(JMenuItem var1, int var2) {
- if (var2 < 0) {
- throw new IllegalArgumentException("index less than zero.");
- } else {
- this.ensurePopupMenuCreated();
- this.popupMenu.insert(var1, var2);
- return var1;
- }
- }
-
- public JMenuItem insert(Action var1, int var2) {
- if (var2 < 0) {
- throw new IllegalArgumentException("index less than zero.");
- } else {
- this.ensurePopupMenuCreated();
- JMenuItem var3 = new JMenuItem(var1);
- var3.setHorizontalTextPosition(11);
- var3.setVerticalTextPosition(0);
- this.popupMenu.insert(var3, var2);
- return var3;
- }
- }
-
- public void insertSeparator(int var1) {
- if (var1 < 0) {
- throw new IllegalArgumentException("index less than zero.");
- } else {
- this.ensurePopupMenuCreated();
- this.popupMenu.insert(new JPopupMenu.Separator(), var1);
- }
- }
-
- public JMenuItem getItem(int var1) {
- if (var1 < 0) {
- throw new IllegalArgumentException("index less than zero.");
- } else {
- Component var2 = this.getMenuComponent(var1);
- if (var2 instanceof JMenuItem) {
- JMenuItem var3 = (JMenuItem)var2;
- return var3;
- } else {
- return null;
- }
- }
- }
-
- public int getItemCount() {
- return this.getMenuComponentCount();
- }
-
- public boolean isTearOff() {
- throw new Error("boolean isTearOff() {} not yet implemented");
- }
-
- public void remove(JMenuItem var1) {
- if (this.popupMenu != null) {
- this.popupMenu.remove(var1);
- }
-
- }
-
- public void remove(int var1) {
- if (var1 < 0) {
- throw new IllegalArgumentException("index less than zero.");
- } else if (var1 > this.getItemCount()) {
- throw new IllegalArgumentException("index greater than the number of items.");
- } else {
- if (this.popupMenu != null) {
- this.popupMenu.remove(var1);
- }
-
- }
- }
-
- public void remove(Component var1) {
- if (this.popupMenu != null) {
- this.popupMenu.remove(var1);
- }
-
- }
-
- public void removeAll() {
- if (this.popupMenu != null) {
- this.popupMenu.removeAll();
- }
-
- }
-
- public int getMenuComponentCount() {
- int var1 = 0;
- if (this.popupMenu != null) {
- var1 = this.popupMenu.getComponentCount();
- }
-
- return var1;
- }
-
- public Component getMenuComponent(int var1) {
- return this.popupMenu != null ? this.popupMenu.getComponent(var1) : null;
- }
-
- public Component[] getMenuComponents() {
- return this.popupMenu != null ? this.popupMenu.getComponents() : new Component[0];
- }
-
- public boolean isTopLevelMenu() {
- return this.getParent() instanceof JMenuBar;
- }
-
- public boolean isMenuComponent(Component var1) {
- if (var1 == this) {
- return true;
- } else {
- if (var1 instanceof JPopupMenu) {
- JPopupMenu var2 = (JPopupMenu)var1;
- if (var2 == this.getPopupMenu()) {
- return true;
- }
- }
-
- int var7 = this.getMenuComponentCount();
- Component[] var3 = this.getMenuComponents();
-
- for(int var4 = 0; var4 < var7; ++var4) {
- Component var5 = var3[var4];
- if (var5 == var1) {
- return true;
- }
-
- if (var5 instanceof JMenu) {
- JMenu var6 = (JMenu)var5;
- if (var6.isMenuComponent(var1)) {
- return true;
- }
- }
- }
-
- return false;
- }
- }
-
- private Point translateToPopupMenu(Point var1) {
- return this.translateToPopupMenu(var1.x, var1.y);
- }
-
- private Point translateToPopupMenu(int var1, int var2) {
- int var3;
- int var4;
- if (this.getParent() instanceof JPopupMenu) {
- var3 = var1 - this.getSize().width;
- var4 = var2;
- } else {
- var3 = var1;
- var4 = var2 - this.getSize().height;
- }
-
- return new Point(var3, var4);
- }
-
- public JPopupMenu getPopupMenu() {
- this.ensurePopupMenuCreated();
- return this.popupMenu;
- }
-
- public void addMenuListener(MenuListener var1) {
- this.listenerList.add(MenuListener.class, var1);
- }
-
- public void removeMenuListener(MenuListener var1) {
- this.listenerList.remove(MenuListener.class, var1);
- }
-
- public MenuListener[] getMenuListeners() {
- return (MenuListener[])this.listenerList.getListeners(MenuListener.class);
- }
-
- protected void fireMenuSelected() {
- Object[] var1 = this.listenerList.getListenerList();
-
- for(int var2 = var1.length - 2; var2 >= 0; var2 -= 2) {
- if (var1[var2] == MenuListener.class) {
- if (var1[var2 + 1] == null) {
- throw new Error(this.getText() + " has a NULL Listener!! " + var2);
- }
-
- if (this.menuEvent == null) {
- this.menuEvent = new MenuEvent(this);
- }
-
- ((MenuListener)var1[var2 + 1]).menuSelected(this.menuEvent);
- }
- }
-
- }
-
- protected void fireMenuDeselected() {
- Object[] var1 = this.listenerList.getListenerList();
-
- for(int var2 = var1.length - 2; var2 >= 0; var2 -= 2) {
- if (var1[var2] == MenuListener.class) {
- if (var1[var2 + 1] == null) {
- throw new Error(this.getText() + " has a NULL Listener!! " + var2);
- }
-
- if (this.menuEvent == null) {
- this.menuEvent = new MenuEvent(this);
- }
-
- ((MenuListener)var1[var2 + 1]).menuDeselected(this.menuEvent);
- }
- }
-
- }
-
- protected void fireMenuCanceled() {
- Object[] var1 = this.listenerList.getListenerList();
-
- for(int var2 = var1.length - 2; var2 >= 0; var2 -= 2) {
- if (var1[var2] == MenuListener.class) {
- if (var1[var2 + 1] == null) {
- throw new Error(this.getText() + " has a NULL Listener!! " + var2);
- }
-
- if (this.menuEvent == null) {
- this.menuEvent = new MenuEvent(this);
- }
-
- ((MenuListener)var1[var2 + 1]).menuCanceled(this.menuEvent);
- }
- }
-
- }
-
- void configureAcceleratorFromAction(Action var1) {
- }
-
- private ChangeListener createMenuChangeListener() {
- return new MenuChangeListener(this);
- }
-
- protected WinListener createWinListener(JPopupMenu var1) {
- return new WinListener(this, var1);
- }
-
- public void menuSelectionChanged(boolean var1) {
- this.setSelected(var1);
- }
-
- public MenuElement[] getSubElements() {
- if (this.popupMenu == null) {
- return new MenuElement[0];
- } else {
- MenuElement[] var1 = new MenuElement[]{this.popupMenu};
- return var1;
- }
- }
-
- public Component getComponent() {
- return this;
- }
-
- public void applyComponentOrientation(ComponentOrientation var1) {
- super.applyComponentOrientation(var1);
- if (this.popupMenu != null) {
- int var2 = this.getMenuComponentCount();
-
- for(int var3 = 0; var3 < var2; ++var3) {
- this.getMenuComponent(var3).applyComponentOrientation(var1);
- }
-
- this.popupMenu.setComponentOrientation(var1);
- }
-
- }
-
- public void setComponentOrientation(ComponentOrientation var1) {
- super.setComponentOrientation(var1);
- if (this.popupMenu != null) {
- this.popupMenu.setComponentOrientation(var1);
- }
-
- }
-
- public void setAccelerator(KeyStroke var1) {
- throw new Error("setAccelerator() is not defined for JMenu. Use setMnemonic() instead.");
- }
-
- protected void processKeyEvent(KeyEvent var1) {
- MenuSelectionManager.defaultManager().processKeyEvent(var1);
- if (!var1.isConsumed()) {
- super.processKeyEvent(var1);
- }
- }
-
- public void doClick(int var1) {
- MenuElement[] var2 = this.buildMenuElementArray(this);
- MenuSelectionManager.defaultManager().setSelectedPath(var2);
- }
-
- private MenuElement[] buildMenuElementArray(JMenu var1) {
- Vector var2 = new Vector();
- Object var3 = var1.getPopupMenu();
-
- while(true) {
- while(!(var3 instanceof JPopupMenu)) {
- if (var3 instanceof JMenu) {
- JMenu var5 = (JMenu)var3;
- var2.insertElementAt(var5, 0);
- var3 = var5.getParent();
- } else if (var3 instanceof JMenuBar) {
- JMenuBar var6 = (JMenuBar)var3;
- var2.insertElementAt(var6, 0);
- MenuElement[] var7 = new MenuElement[var2.size()];
- var2.copyInto(var7);
- return var7;
- }
- }
-
- JPopupMenu var4 = (JPopupMenu)var3;
- var2.insertElementAt(var4, 0);
- var3 = var4.getInvoker();
- }
- }
-
- private void writeObject(ObjectOutputStream var1) throws IOException {
- var1.defaultWriteObject();
- if (this.getUIClassID().equals("MenuUI")) {
- byte var2 = JComponent.getWriteObjCounter(this);
- --var2;
- JComponent.setWriteObjCounter(this, var2);
- if (var2 == 0 && this.ui != null) {
- this.ui.installUI(this);
- }
- }
-
- }
-
- protected String paramString() {
- return super.paramString();
- }
-
- public AccessibleContext getAccessibleContext() {
- if (this.accessibleContext == null) {
- this.accessibleContext = new AccessibleJMenu(this);
- }
-
- return this.accessibleContext;
- }
-
- // $FF: synthetic method
- static MenuElement[] access$000(JMenu var0, JMenu var1) {
- return var0.buildMenuElementArray(var1);
- }
- }
-